---
sidebar_position: 3
---

# Задание №3

## Описание

Составьте программу вычисления значения суммы ряда $S(x)$ и функции $Y(x)$, где $0 \leq x \leq 1$, с шагом $h=0.2$. Вычисление суммы ряда Тейлора производится с погрешностью, не превышающей $delta=0.000001$.

Результат представить в виде таблицы (без рамок), которая содержит четыре столбца со значениями `x`, `Y(x)`, `S(x)` и `N`, где `N` - номер последнего слагаемого ряда.

**Ширина столбца**: `15` символов.

:::caution

Последний столбец пробелами не заполняется!

:::

**Требуемая точность**: `6` знаков после запятой

## Варианты

| № | $S(x)$ |  $Y(x)$ |
| --- | --- |  --- |
| 0 | $2(x + \cfrac{x^3}{3} + ... +\cfrac{x^{2n+1}}{2n+1})$ | $\ln{\cfrac{1+x}{1-x}}$, где $x < 1$|
| 1 | $x - \cfrac{x^3}{3!} + ... + (-1)^n\cfrac{x^{2n+1}}{(2n+1)!}$ | $\sin(x)$ |
| 2 | $1 + \cfrac{x^2}{2!} + ... + \cfrac{x^{2n}}{(2n)!}$ | $\cfrac{e^x+e^{-x}}{2}$ |
| 3 | $1 - \cfrac{(1-4x)^2}{2} + ... + \cfrac{(-1)^{n}(1-4x)^{2n}}{(2n)!}$ | $\cos(1-4x)$ |
| 4 | $1 - \cfrac{x^2}{2!} + ... + (-1)^n\cfrac{x^{2n}}{(2n)!}$ | $\cos(x)$ |
| 5 | $1 + 3x^2 + ... + \cfrac{2n+1}{n!}x^{2n}$ | $(1 + 2x^2)e^{x^2}$, где $x < 1$|
| 6 | $1 - x^2 + \cfrac{x^4}{2!} - ... + \cfrac{(-1)^n}{n!}x^{2n}$ | $e^{-x^{2}}$ |
| 7 | $x^3 - \cfrac{x^5}{3} + ... + (-1)^n\cfrac{x^{2n+3}}{2n+1}$ | $x^2\arctan(x)$ |
| 8 | $1 + \cfrac{2x}{1!} + ... + \cfrac{(2x)^n}{n!}$ | $e^{2x}$ |
| 9 | $1 + 2 \cfrac{x}{2} + ... +\cfrac{n^2 + 1 }{n!}(\cfrac{x}{2})^n$ | $(\cfrac{x^2}{4}+\cfrac{x}{2}+1)e^{\cfrac{x}{2}}$ |
| 10 | $x - \cfrac{x^3}{3} + ... + (-1)^n\cfrac{x^{2n+1}}{2n+1}$ | $\arctan(x)$ |
| 11 | $1 - \cfrac{3}{2}x^2 + ... + (-1)^n\cfrac{2n^2+1}{(2n)!}x^{2n}$ | $(1 - \cfrac{x^2}{2})\cos(x) - \cfrac{x}{2}\sin(x)$ |
| 12 | $1 - \cfrac{(2x)^2}{2} + \cfrac{(2x)^4}{2*3*4} + ... + (-1)^n\cfrac{(2x)^{2n}}{(2n)!}$ | $\cos(2x-1)$ |

## Пример вывода в консоли

```bash
x              Y(x)           S(x)           N
0.000000       1.000000       1.000000       1
0.200000       0.980067       0.980067       3
0.400000       0.921061       0.921061       4
0.600000       0.825336       0.825335       4
0.800000       0.696707       0.696707       5
1.000000       0.540302       0.540303       5
```

:::caution

В первой строке выводятся названия колонок.

:::

## Указания по выполнению задания

При вычислении значения очередного члена ряда используйте значение предыдущего члена, для чего следует вручную получить соотношение вида

$$
k(x,n) = A_{i}(x,n) / A_{i-1}(x,n)
$$

Вычислении членов ряда, начиная со второго (а может и с третьего) следует выполнять по формуле:

$$
A_{i} = A_{i-1} * k
$$

Это упростит вычисления, повысит их точность и позволит избежать возможного переполнения разрядной сетки сумматора ПК при вычислении факториалов и степеней.

Заданная точность обеспечивается суммированием членов ряда вплоть до слагаемого, абсолютное значение которого меньше заданной погрешности.

Для представления результата в виде таблицы используйте:

- для C использовать форматирование вывода (см. ниже);
- для C++ манипулятор `setw`.

Близость значений $S(x)$ и $Y(x)$ (отличие должно быть меньше или равно заданной точности) во всем диапазоне значений $x$ указывает на правильность их вычисления.

### Представление в виде таблицы в C

Основано на [ответе](https://stackoverflow.com/questions/3187149/c-equivalent-of-the-setw-function).

Если вам нужно ровно 40 пробелов перед строкой, вам просто нужно сделать:

```c
printf("                                        %s\n", myStr);
```

Если это слишком грязно, вы можете сделать (но это будет медленнее, чем вводить `40` пробелов вручную):

```c
printf("%40s%s", "", myStr);
```

Если вы хотите, чтобы строка была выровнена в столбце `40` (то есть, в ней должно быть до `39` пробелов, так что самый правый символ находится в столбце `40`), то сделайте это:

```c
printf("%40s", myStr);
```

Вы также можете поместить "до" `40` пробелов после строки, выполнив:

```c
printf("%-40s", myStr);
```

## Проверка задания

Подготовленная программа для решения задания проверяется вручную преподавателем (визуальный контроль).
